import mongoose from 'mongoose'
import dayjs from 'dayjs'

const blogSchema = new mongoose.Schema(
  {
    title: String, // 标题
    summary: String, // 摘要
    content: String, // 内容
    createAt: { type: Date, default: Date.now }, // 发表时间
    lastUpdateAt: { type: Date, default: Date.now }, // 最后更新时间
    author: { type: mongoose.Schema.Types.ObjectId, ref: 'user' }
  },
  { versionKey: false }
)

// 虚拟字段：发布时间
blogSchema.virtual('formattedCreateAt').get(function () {
  return dayjs(this.createAt).format('YYYY年MM月DD日')
})

// 虚拟字段：更新时间
blogSchema.virtual('formattedLastUpdateAt').get(function () {
  return dayjs(this.lastUpdateAt).format('YYYY-MM-DD HH:mm:ss')
})

// 虚拟字段：博客的评论
blogSchema.virtual('comments', {
  ref: 'comment',
  localField: '_id',
  foreignField: 'blog',
  count: false
})

// 虚拟字段：博客的评论数量
blogSchema.virtual('cmtCount', {
  ref: 'comment',
  localField: '_id',
  foreignField: 'blog',
  count: true
})

// 开启虚拟字段的 JSON 输出
blogSchema.set('toJSON', { virtuals: true })
blogSchema.set('toObject', { virtuals: true })

export default blogSchema
